from app import create_app, db
from app.models import User, Role, Permission, Menu
from datetime import datetime

app = create_app()

@app.cli.command()
def init_db():
    """初始化数据库"""
    db.create_all()
    print('数据库表创建成功')

@app.cli.command()
def create_admin():
    """创建超级管理员"""
    # 检查是否已存在超级管理员
    admin = User.query.filter_by(username='admin').first()
    if admin:
        print('超级管理员已存在')
        return
    
    # 创建超级管理员
    admin = User(
        username='admin',
        email='admin@example.com',
        real_name='超级管理员',
        is_superuser=True,
        is_active=True
    )
    admin.password = 'admin123'
    
    db.session.add(admin)
    db.session.commit()
    print('超级管理员创建成功')

@app.cli.command()
def create_default_data():
    """创建默认数据"""
    # 创建默认角色
    admin_role = Role.query.filter_by(code='admin').first()
    if not admin_role:
        admin_role = Role(
            name='超级管理员',
            code='admin',
            description='系统超级管理员角色'
        )
        db.session.add(admin_role)
    
    user_role = Role.query.filter_by(code='user').first()
    if not user_role:
        user_role = Role(
            name='普通用户',
            code='user',
            description='普通用户角色'
        )
        db.session.add(user_role)
    
    # 创建默认权限
    permissions_data = [
        {'name': '用户管理', 'code': 'user:manage', 'type': 'menu', 'path': '/users'},
        {'name': '角色管理', 'code': 'role:manage', 'type': 'menu', 'path': '/roles'},
        {'name': '权限管理', 'code': 'permission:manage', 'type': 'menu', 'path': '/permissions'},
        {'name': '菜单管理', 'code': 'menu:manage', 'type': 'menu', 'path': '/menus'},
        {'name': '用户查看', 'code': 'user:view', 'type': 'button'},
        {'name': '用户创建', 'code': 'user:create', 'type': 'button'},
        {'name': '用户编辑', 'code': 'user:edit', 'type': 'button'},
        {'name': '用户删除', 'code': 'user:delete', 'type': 'button'},
        {'name': '角色查看', 'code': 'role:view', 'type': 'button'},
        {'name': '角色创建', 'code': 'role:create', 'type': 'button'},
        {'name': '角色编辑', 'code': 'role:edit', 'type': 'button'},
        {'name': '角色删除', 'code': 'role:delete', 'type': 'button'},
    ]
    
    for perm_data in permissions_data:
        perm = Permission.query.filter_by(code=perm_data['code']).first()
        if not perm:
            perm = Permission(**perm_data)
            db.session.add(perm)
    
    # 创建默认菜单
    menus_data = [
        {'name': '系统管理', 'code': 'system', 'title': '系统管理', 'path': '/system', 'icon': 'Setting', 'sort_order': 1},
        {'name': '用户管理', 'code': 'user', 'title': '用户管理', 'path': '/users', 'component': 'User', 'icon': 'User', 'parent_id': 1, 'sort_order': 1},
        {'name': '角色管理', 'code': 'role', 'title': '角色管理', 'path': '/roles', 'component': 'Role', 'icon': 'UserFilled', 'parent_id': 1, 'sort_order': 2},
        {'name': '权限管理', 'code': 'permission', 'title': '权限管理', 'path': '/permissions', 'component': 'Permission', 'icon': 'Lock', 'parent_id': 1, 'sort_order': 3},
        {'name': '菜单管理', 'code': 'menu', 'title': '菜单管理', 'path': '/menus', 'component': 'Menu', 'icon': 'Menu', 'parent_id': 1, 'sort_order': 4},
    ]
    
    for menu_data in menus_data:
        menu = Menu.query.filter_by(code=menu_data['code']).first()
        if not menu:
            menu = Menu(**menu_data)
            db.session.add(menu)
    
    db.session.commit()
    print('默认数据创建成功')

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5001) 